#!/bin/bash
# generate_redis_certs.sh

# 创建证书目录
mkdir -p /etc/redis/ssl
cd /etc/redis/ssl

# 生成CA私钥和证书
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Corp/CN=Redis CA"

# 生成服务器私钥
openssl genrsa -out redis.key 2048

# 生成证书签名请求
openssl req -new -key redis.key -out redis.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Corp/CN=redis.example.com"

# 用CA签发服务器证书
openssl x509 -req -in redis.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out redis.crt -days 365

# 生成Diffie-Hellman参数
openssl dhparam -out redis.dh 2048

# 设置文件权限
chmod 600 ca.key redis.key
chmod 644 ca.crt redis.crt redis.dh

# 创建证书包（包含服务器证书和CA证书）
cat redis.crt ca.crt > redis-bundle.crt

echo "证书生成完成！"
